package com.linden.std.service.auth;

/**
 * 登录安全控制服务
 * 负责防暴力破解、登录尝试次数限制等安全功能
 */
public interface LoginSecurityService {
    
    /**
     * 检查账户是否被锁定
     * @param account 账户名
     * @return true-已锁定，false-未锁定
     */
    boolean isAccountLocked(String account);
    
    /**
     * 检查IP是否被锁定
     * @param ip IP地址
     * @return true-已锁定，false-未锁定
     */
    boolean isIpLocked(String ip);
    
    /**
     * 记录登录失败次数
     * @param account 账户名
     * @param ip IP地址
     */
    void recordLoginFailure(String account, String ip);
    
    /**
     * 清除登录失败记录（登录成功时调用）
     * @param account 账户名
     * @param ip IP地址
     */
    void clearLoginFailures(String account, String ip);
    
    /**
     * 获取账户剩余尝试次数
     * @param account 账户名
     * @return 剩余尝试次数
     */
    int getRemainingAttempts(String account);
    
    /**
     * 获取账户锁定剩余时间（秒）
     * @param account 账户名
     * @return 剩余锁定时间，-1表示未锁定
     */
    long getAccountLockRemainingTime(String account);
    
    /**
     * 获取IP锁定剩余时间（秒）
     * @param ip IP地址
     * @return 剩余锁定时间，-1表示未锁定
     */
    long getIpLockRemainingTime(String ip);
}